package cms.utils.newimgmerge;

import cms.utils.myutiil.FileUtilF;
import cms.utils.myutiil.ImgUtil;
import com.freewayso.image.combiner.ImageCombiner;
import com.freewayso.image.combiner.enums.OutputFormat;
import com.freewayso.image.combiner.enums.ZoomMode;

import java.awt.image.BufferedImage;
import java.io.File;

/**
 *  图片轻量化
 *
 * @author dhf
 * 2022年08月27日 10:22:00
 */
public class ImgLiteUtil {
    public static void main(String[] args) {
        start();
    }

    public static void start() {
        File oriDir = new File("C:\\Programs\\DAUM\\PotPlayer\\Capture\\图片");
        File desDir = new File("C:\\Programs\\DAUM\\PotPlayer\\Capture\\图片-lite");
        if(!desDir.exists()) {
            desDir.mkdirs();
        }


        startImgLite(oriDir, desDir);
    }

    private static void startImgLite(File oriDir, File desDir) {
        for (File file : oriDir.listFiles()) {
            if(FileUtilF.isImg(file)) {
                liteSingleImg(file, new File(desDir, file.getName()));
            }
        }
    }

    /**
     * 轻量化单张图片（不限制图片最小宽度）
     *
     * @author dhf
     * 2022年09月03日 09:16:00
     */
    private static void liteSingleImg(File oriImgFile, File desImgFile) {
        liteSingleImg(oriImgFile, desImgFile, 0);
    }

    /**
     * 轻量化单张图片（限制图片最小宽度）
     *
     * @author dhf
     * 2022年09月03日 09:15:37
     */
    public static void liteSingleImg(File oriImgFile, File desImgFile, int minWidth) {
        BufferedImage oriBuffImg = ImgUtil.loadImageLocal(oriImgFile);
        int width = oriBuffImg.getWidth();
        int height = oriBuffImg.getHeight();

        if(minWidth > 0 && width > minWidth) {
            width = minWidth;
            height = (int)(width * oriBuffImg.getHeight() * 1D / oriBuffImg.getWidth());
        }

        ImageCombiner combiner = new ImageCombiner(width, height, OutputFormat.JPG);
        combiner.addImageElement(oriBuffImg, 0, 0, width, height, ZoomMode.WidthHeight);
        try {
            combiner.combine();
            combiner.save(desImgFile.getAbsolutePath());

        } catch (Exception e) {
            System.out.println("图片转换失败 " + oriImgFile.getAbsolutePath());
            e.printStackTrace();

        }
    }
}
